<?php
namespace app\Api\Aky;

use PhalApi\Api;

/**
 * 泥头车信息添加接口
 */
class CarInfo extends Api
{
    
    public function getRules() {
        return array(
            'add' => array(
                'category' => array('name' => 'category', 'require' => false, 'desc' => '车辆类别'),
                'carNo' => array('name' => 'carNo', 'require' => false, 'desc' => '车牌号'),
                'pimg' => array('name' => 'pimg', 'require' => false, 'desc' => '车牌单独的图片'),
                'carimg' => array('name' => 'carimg', 'require' => false, 'desc' => '整个场景的图片'),
                'vehicleNo' => array('name' => 'vehicleNo', 'require' => false, 'desc' => '联单号'),
            ),
        );
    }

    /**
     * 添加泥头车信息
     * @desc 添加泥头车相关信息到yolo_car表
     * @return int code 0表示成功，其他表示失败
     * @return string msg 提示信息
     * @return array data 返回的数据
     */
    public function add() {
        // 支持JSON方式传数据
        $jsonInput = file_get_contents('php://input');
        $jsonParams = json_decode($jsonInput, true);
        
        // 如果是JSON数据，则使用JSON数据，否则使用GET/POST参数
        if (!empty($jsonParams) && is_array($jsonParams)) {
            $params = $jsonParams;
        } else {
            // 使用get方式获取所有输入参数，便于接口变动
            $params = \PhalApi\DI()->request->getAll();
        }
        
        // 设置默认值
        $category = isset($params['category']) ? $params['category'] : '泥头车';
        $carNo = isset($params['carNo']) ? $params['carNo'] : '';
        $pimg = isset($params['pimg']) ? $params['pimg'] : '';
        $carimg = isset($params['carimg']) ? $params['carimg'] : '';
        $vehicleNo = isset($params['vehicleNo']) ? $params['vehicleNo'] : '';
        
        // 验证必要参数
        if (empty($carNo)) {
            \PhalApi\DI()->response->setMsg('车牌号不能为空');
            \PhalApi\DI()->response->setRet(1);
            return array('data' => array());
        }
        
        // 用来排重的，每小时只允许添加一次
        $currentHour = date('Y-m-d H', time());
        
        // 检查是否在当前小时内已经添加过相同车牌号的记录
        $existingRecord = \PhalApi\DI()->notorm->yolo_car
            ->where('carNo', $carNo)
            ->where('date_time', $currentHour)
            ->fetch();
            
        if ($existingRecord) {
            \PhalApi\DI()->response->setMsg('该车牌号在当前小时内已添加过记录');
            \PhalApi\DI()->response->setRet(4);
            return array('data' => array());
        }
        
        // 准备插入数据
        $data = array(
            'category' => $category,
            'carNo' => $carNo,
            'pimg' => $pimg,
            'carimg' => $carimg,
            'vehicleNo' => $vehicleNo,
            'create_time' => date('Y-m-d H:i:s', time()),
            'date_time' => $currentHour, // 用来排重的，每小时只允许添加一次
        );
        
        try {
            // 插入数据到yolo_car表
            $result = \PhalApi\DI()->notorm->yolo_car->insert($data);
            
            if ($result) {
                \PhalApi\DI()->response->setMsg('添加成功');
                \PhalApi\DI()->response->setRet(0);
                return array('data' => array('id' => $result));
            } else {
                \PhalApi\DI()->response->setMsg('添加失败');
                \PhalApi\DI()->response->setRet(2);
                return array('data' => array());
            }
        } catch (\Exception $e) {
            \PhalApi\DI()->response->setMsg('数据库操作异常：' . $e->getMessage());
            \PhalApi\DI()->response->setRet(3);
            return array('data' => array());
        }
    }
}